package com.hc.conferencecheck.service;

import com.hc.conferencecheck.entity.Conference;
import com.hc.conferencecheck.entity.ConferenceAddress;
import com.hc.conferencecheck.entity.ResultMsg;
import com.hc.conferencecheck.entity.entityDTO.ConferenceAppliedDTO;
import com.hc.conferencecheck.entity.entityDTO.ConferenceDetailDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 会议对象service
 */
public interface ConferenceService {

    /**
     * 查询所有会议的未通过申请记录
     *
     * @param params
     * @return
     */
    public List<ConferenceDetailDTO> selectAttendRecordNotApproved(Map<String, Object> params);

    /**
     * 查询所有的会议对象
     *
     * @return
     */
    public ResultMsg selectAllConference(Map<String, Object> params);

    /**
     * 会议后台管理页面查询会议详情
     *
     * @param params
     * @return
     */
    public ResultMsg selectConferenceInfo(Map<String, Object> params);

    /**
     * 查询当前用户所有可签到会议
     */
    public ResultMsg selectBranchAddressAllowSign(Integer conventionerId);

    /**
     * 修改会议对象
     */
    public ResultMsg editConference(Conference conference, List<ConferenceAddress> addressList);

    /**
     * 删除会议对象
     */
    public ResultMsg deleteConferenceByPrimaryKey(int conferenceId);

    /**
     * 添加会议对象
     */
    public ResultMsg createConference(Conference conference, List<ConferenceAddress> addressList, MultipartFile file);

    /**
     * 申请报名会议接口
     */
    public ResultMsg applyConference(Map<String, Object> params);

    /**
     * 根据主键查询会议对象
     */
    public ResultMsg selectConferenceByPrimaryKey(Map<String, Object> params);

    /**
     * 查询所有的会议对象
     */
    public ResultMsg selectAllConferences(Map<String, Object> params);

    /**
     * 查询当前用户所有已申请会议
     */
    public List<ConferenceAppliedDTO> selectConferenceApplied(Integer conventionerId);

    /**
     * “我的会议申请”模块中的会议详情
     */
    public ResultMsg selectConferenceByIds(Map<String, Object> params);

    /**
     * 根据用户ID查询该用户所有某状态的申请记录
     */
    public ResultMsg selectConferenceInfoByConventionerId(Map<String, Object> params);

    /**
     * 修改会议对象
     */
    public ResultMsg createConference02(Conference conference, List<ConferenceAddress> addressList, MultipartFile file, Integer conferenceId);
}
